Personal computer systems are well known in the art. Personal computer systems in general, and IBM Personal Computers in particular, have attained widespread use for providing computer power to many segments of today's modern society. Personal computers can typically be defined as a desktop, floor-standing, or portable microcomputer that is comprised of a system unit having a single central processing unit (CPU) and associated volatile and non-volatile memory, including all RAM and BIOS ROE, a system monitor, a keyboard, one or more flexible diskette drives, a fixed disk storage device, and an optional printer. One of the distinguishing characteristics of these systems is the use of a motherboard or system planar to electrically connect these components together. These systems are designed primarily to give independent computing power to a single user and are inexpensively priced for purchase by individuals or small business. Examples of such personal computer systems are IBM's PERSONAL COMPUTER AT and IBM's PERSONAL SYSTEM/2.
In computer systems, the components communicate via electrical signals. These electrical signals are typically carried by electrical connections between the system components. Typical types of electrical connections include metal traces on a printed circuit board, vias, plated through holes, plugs, and individual wires wrapped from pin to pin of system components. Typically groups of electrical signals and groups of electrical connections that carry the electrical signals are referred to as a "bus." Thus, a reference to a "bus" can indicate a reference to a group of electrical signals, a group of electrical connections that carry the electrical signals, or a reference to both a group of electrical signals that form a protocol and a group of electrical connections that carry the electrical signals. Systems can be said to have a variety of buses. A "local bus" is a bus that is, in general, synchronous with the CPU and designed to optimize the performance of the CPU. Most systems also have a "peripheral bus," which is either synchronous or asynchronous, and may transfer data at a slower frequency than the local bus. Peripheral buses typically have a number of interface slots, which are connectors that allow peripheral device cards to be pluggably connected to the peripheral bus. Typically the peripheral bus is interfaced to the system local bus with a bus interface circuit (BIC). The BIC interfaces between the system local bus and the peripheral bus, handling any differences in bus bandwidths, managing control of the buses between busmasters, etc.
Personal computer systems are typically used to execute software to perform such diverse activities as word processing, manipulation of data via spread-sheets, collection and relation of data in databases, displays of graphics, design of electrical or mechanical systems using system design software, etc.
Most personal computer systems employ dynamic random access memory (DRAM) for main storage. DRAM memory is fabricated on silicon chips of various sizes. Most personal computers require many (e.g., 4-128 or more) of these silicon chips to provide a full main memory array of the desired size. Moreover, it is convenient to assemble multiple DRAM chips onto small card sub-assemblies and then employ these sub-assemblies in a personal computer system.
In the past, memory solutions for most low cost personal computers utilized only one of two possible memory packaging solutions, i.e., 30-pin (1 Byte) or 72-pin (4 Byte) Single Inline Memory Modules (SIMM). While other more sophisticated solutions are in existence, they were used in a small percentage of the systems produced. The solution for memory packaging these products was reasonably straightforward with the 30-pin SIMM, as the 30-pin standard was quite narrow in scope. However, this has changed with the increasing complexity of the 72-pin SIMM with various types of options on the 72-pin SIMM, as well as the proliferation of more advanced SIMMs, e.g., 88-pin SIMMs and 168-pin SIMMs. In fact, within these different size SIMMs, there has developed several different standards such as industry standard as opposed to IBM standard, and additionally some of these SIMMs were ECC SIMMs, i.e., they were error correction code (ECC) optimized; i.e., they were designed with 36 or 40 data bits and no byte write capability.
However, other problems arise, especially with respect to ECC versus parity SIMMs. For example, several particular pins are used for one particular signal on 72-pin parity SIMMs, and are used for another signal on 72-pin ECC SIMMs. Thus, the signals being delivered from the CPU by the memory controller if used for one configuration will not work for the other. In the past, it was necessary to either limit the type of SIMMs that can be added on, or the planar had to be rewired for each particular type of SIMM, and thus a given system could only use a particular SIMM depending upon how it was hard wired. This presented a problem for adaptability or flexibility for a given system design to use multiple different types of SIMM memory cards.